Java.time Package এর মাধ্যমে দুটি তারিখ বা সময়ের মধ্যে পার্থক্য নির্ণয় করার জন্য Duration এবং Period ক্লাস ব্যবহার করা হয়। এগুলি মূলত তারিখ এবং সময়ের মধ্যে পার্থক্য নির্ণয় করতে সহায়ক।
1. Duration ক্লাস:
Duration ক্লাসটি সময়ের (Time-based) পার্থক্য নির্ণয় করতে ব্যবহৃত হয়, যেমন ঘণ্টা, মিনিট, সেকেন্ড, এবং মিলিসেকেন্ড। এটি সাধারণত LocalTime, LocalDateTime, ZonedDateTime এর মধ্যে পার্থক্য বের করতে ব্যবহৃত হয়।
2. Period ক্লাস:
Period ক্লাসটি তারিখের (Date-based) পার্থক্য নির্ণয় করতে ব্যবহৃত হয়, যেমন বছর, মাস, দিন। এটি সাধারণত LocalDate এর মধ্যে পার্থক্য বের করতে ব্যবহৃত হয়।
দুটি তারিখ বা সময়ের মধ্যে পার্থক্য নির্ণয় করার উদাহরণ:
2.1 সময়ের পার্থক্য নির্ণয়: (Duration Class)
ধরা যাক, আমাদের দুটি LocalTime অবজেক্ট আছে এবং আমরা তাদের মধ্যে সময়ের পার্থক্য বের করতে চাই:
import java.time.*;
public class DurationExample {
public static void main(String[] args) {
// Create two LocalTime objects
LocalTime startTime = LocalTime.of(8, 30); // 08:30
LocalTime endTime = LocalTime.of(14, 45); // 14:45
// Calculate the duration between the two times
Duration duration = Duration.between(startTime, endTime);
// Print the difference in hours and minutes
System.out.println("Duration: " + duration.toHours() + " hours " + duration.toMinutes() % 60 + " minutes");
}
}
আউটপুট:
Duration: 6 hours 15 minutes
ব্যাখ্যা:
Duration.between(startTime, endTime): এটিstartTimeএবংendTimeএর মধ্যে সময়ের পার্থক্য বের করে এবং Duration অবজেক্ট ফিরিয়ে দেয়।duration.toHours(): এটি মোট ঘণ্টা বের করে।duration.toMinutes() % 60: এটি মিনিটের পার্থক্য বের করে।
2.2 তারিখের পার্থক্য নির্ণয়: (Period Class)
ধরা যাক, আমাদের দুটি LocalDate অবজেক্ট আছে এবং আমরা তাদের মধ্যে তারিখের পার্থক্য বের করতে চাই:
import java.time.*;
public class PeriodExample {
public static void main(String[] args) {
// Create two LocalDate objects
LocalDate startDate = LocalDate.of(2024, 1, 1); // 1st January 2024
LocalDate endDate = LocalDate.of(2024, 12, 31); // 31st December 2024
// Calculate the period between the two dates
Period period = Period.between(startDate, endDate);
// Print the difference in years, months, and days
System.out.println("Period: " + period.getYears() + " years, " + period.getMonths() + " months, " + period.getDays() + " days");
}
}
আউটপুট:
Period: 0 years, 11 months, 30 days
ব্যাখ্যা:
Period.between(startDate, endDate): এটিstartDateএবংendDateএর মধ্যে তারিখের পার্থক্য বের করে এবং Period অবজেক্ট ফিরিয়ে দেয়।period.getYears(): এটি বছরগুলোর পার্থক্য বের করে।period.getMonths(): এটি মাসগুলোর পার্থক্য বের করে।period.getDays(): এটি দিনের পার্থক্য বের করে।
3. LocalDateTime এর মধ্যে পার্থক্য নির্ণয়: (Duration and Period)
LocalDateTime অবজেক্টের মধ্যে পার্থক্য নির্ণয় করার জন্য Duration এবং Period উভয়ই ব্যবহার করা যেতে পারে। যেহেতু LocalDateTime সময় এবং তারিখ উভয়কেই ধারণ করে, সুতরাং আপনি যেভাবে সময়ের পার্থক্য বের করেছেন, ঠিক সেভাবেই তারিখের পার্থক্যও বের করতে পারবেন।
LocalDateTime Example:
import java.time.*;
public class LocalDateTimeDifferenceExample {
public static void main(String[] args) {
// Create two LocalDateTime objects
LocalDateTime startDateTime = LocalDateTime.of(2024, 1, 1, 10, 30); // 1st January 2024, 10:30
LocalDateTime endDateTime = LocalDateTime.of(2024, 12, 31, 14, 45); // 31st December 2024, 14:45
// Calculate the duration between the two LocalDateTime objects
Duration duration = Duration.between(startDateTime, endDateTime);
// Print the difference in days, hours, and minutes
System.out.println("Duration: " + duration.toDays() + " days, " + duration.toHours() % 24 + " hours, " + duration.toMinutes() % 60 + " minutes");
}
}
আউটপুট:
Duration: 364 days, 4 hours, 15 minutes
ব্যাখ্যা:
Duration.between(startDateTime, endDateTime): এটিLocalDateTimeএর মধ্যে সময়ের পার্থক্য বের করে এবং Duration ফেরত দেয়।duration.toDays(): এটি দিনের পার্থক্য বের করে।duration.toHours() % 24: এটি ঘণ্টার পার্থক্য বের করে।duration.toMinutes() % 60: এটি মিনিটের পার্থক্য বের করে।
4. ZonedDateTime এর মধ্যে পার্থক্য নির্ণয়:
ZonedDateTime ক্লাস ব্যবহার করে আপনি টাইমজোন সহ তারিখ এবং সময়ের পার্থক্য বের করতে পারেন।
import java.time.*;
public class ZonedDateTimeExample {
public static void main(String[] args) {
// Create two ZonedDateTime objects
ZonedDateTime startZonedDateTime = ZonedDateTime.of(2024, 1, 1, 10, 30, 0, 0, ZoneId.of("America/New_York"));
ZonedDateTime endZonedDateTime = ZonedDateTime.of(2024, 12, 31, 14, 45, 0, 0, ZoneId.of("Europe/London"));
// Calculate the duration between the two ZonedDateTime objects
Duration duration = Duration.between(startZonedDateTime, endZonedDateTime);
// Print the difference in days, hours, and minutes
System.out.println("Duration: " + duration.toDays() + " days, " + duration.toHours() % 24 + " hours, " + duration.toMinutes() % 60 + " minutes");
}
}
আউটপুট:
Duration: 364 days, 5 hours, 15 minutes
ব্যাখ্যা:
Duration.between(startZonedDateTime, endZonedDateTime): এটিZonedDateTimeঅবজেক্টগুলোর মধ্যে সময়ের পার্থক্য বের করে।- এটি
ZonedDateTimeএ টাইমজোনের পার্থক্যও স্বাভাবিকভাবে পরিচালনা করে।
DurationএবংPeriodক্লাসের মাধ্যমে আপনি সময়ের এবং তারিখের পার্থক্য বের করতে পারেন।Durationব্যবহার করে সময় (ঘণ্টা, মিনিট, সেকেন্ড) এর পার্থক্য বের করা হয়, এবংPeriodব্যবহার করে তারিখ (বছর, মাস, দিন) এর পার্থক্য বের করা হয়।ZonedDateTimeএবংLocalDateTimeএর মধ্যে পার্থক্য বের করতে এই ক্লাসগুলি অত্যন্ত কার্যকরী, এবং এগুলি টাইমজোন সম্পর্কিত তথ্যও ঠিকভাবে হ্যান্ডেল করে।
Java.time প্যাকেজের এই ক্লাসগুলোর মাধ্যমে আপনি তারিখ ও সময়ের মধ্যে পার্থক্য নির্ণয় করে আপনার অ্যাপ্লিকেশনকে আরো কার্যকরী এবং দক্ষভাবে পরিচালনা করতে পারবেন।
Read more